package pois.agenda;

import java.util.Calendar;

import com.google.java.contract.Requires;



public class MiEvento implements Evento{

	
	private java.util.Calendar inicio; 
	private java.util.Calendar fin;
	private boolean esTodoElDia;
	private String descripcion;
	
	
	@Requires(value={"inicio.compareTo(fin)<=0"})
	public MiEvento(Calendar inicio, Calendar fin, boolean esTodoElDia, String descripcion){
		this.inicio=inicio;
		this.fin=fin;
		this.esTodoElDia=esTodoElDia;
		this.descripcion=descripcion;
		
	}
	
	
	public Calendar inicio() {
		return  this.inicio;
	}

	@Override
	public Calendar fin() {
		return this.fin;
	}

	@Override
	public boolean esTodoElDia() {
		return this.esTodoElDia;
	}

	@Override
	public String descripcion() {
		return this.descripcion;
	}

	@Override
	public int compareTo(Evento otro) {
		return this.inicio.compareTo(otro.inicio());
	
	}
	public String toString(){
		
		if (this.esTodoElDia){
			return this.descripcion+ ": " +traduceFecha(this.inicio)+ " a " +traduceFecha(this.fin)+" y es todo el dia";
		}else{
			return this.descripcion+ ": " +traduceFecha(this.inicio)+ " a " +traduceFecha(this.fin)+" y NO es todo el dia";		
		}
		}
	
		
	private String traduceFecha(Calendar fecha){
		
		String fecha_string;
		String dia_nombre;
		String mes;
		String dia_numero;
		String hora;
		String anno;
		String ces;
		
		String dia_traducido="";
		String mes_traducido="";
		
		String[] lista_dias_ing = {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
		String[] lista_dias_esp = {"Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"};
		String[] lista_meses_ing = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
		String[] lista_meses_esp ={"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
		
		int i;
		
		fecha_string= fecha.getTime().toString();
		dia_nombre = fecha_string.substring(0, 3);
		mes = fecha_string.substring(4, 7);
		dia_numero = fecha_string.substring(8, 10);
		hora = fecha_string.substring(11, 19);
		anno = fecha_string.substring(24, 28);
		ces = fecha_string.substring(20, 23);
		
		if ("CES".equals(ces)) anno = fecha_string.substring(25, 29);
		
		else anno = fecha_string.substring(24, 28);

		/*
		 * Ahora traducimos el dia a español para adaptarla al formato
		 * pedido.
		 */
		
		for (i=0; i< lista_dias_ing.length; i++ ){
			if (dia_nombre.equals(lista_dias_ing[i])){
				dia_traducido=lista_dias_esp[i];
			}
		}
		/*
		 * Ahora traducimos el mes a español para adaptarla al formato
		 * pedido.
		 */
		for (i=0; i< lista_meses_ing.length; i++ ){
			if (mes.equals(lista_meses_ing[i])){
				 
				mes_traducido=lista_meses_esp[i];
			}
		}	
		
		/*
		 * Por último devolvemos la fecha en el orden correcto
		 */
		
		return dia_traducido + " " + dia_numero + " de " + mes_traducido + " del " + anno + " a las " + hora;
	}

}
